home *** CD-ROM | disk | FTP | other *** search
- /************************************************************************/
- /* Project...: C++ and ANSI-C Compiler Environment */
- /* Name......: CPlusLib.h */
- /* Purpose...: C++ specific runtime functions */
- /* Copyright.: ©Copyright 1994 by metrowerks inc. All rights reserved. */
- /************************************************************************/
-
- typedef struct DestructorChain {
- struct DestructorChain *next; // pointer to next destructor chain element
- void *destructor; // pointer to destructor function
- void *object; // pointer to memory location (0L: element is marker)
- } DestructorChain;
-
- typedef struct MemberFuncPointerType {
- long this_delta; // delta to this pointer
- long vtbl_offset; // offset in vtable (-1: not a virtual function)
- union {
- void *func_addr; // nonvirtual function address
- long ventry_offset; // offset of virtual function entry in vtable
- } func_data;
- } MemberFuncPointerType;
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- // these functions/variables are defined in startup code
- extern DestructorChain *__global_destructor_chain;
-
- extern void __destroy_global_chain(void);
-
- // these functions/variables are defined in CPlusLib.c
- extern DestructorChain *__local_destructor_chain;
-
- extern long __ptmf_test(const void *ptmf);
- extern long __ptmf_cmpr(const void *ptmf1,const void *ptmf2);
- extern void __ptmf_call(...);
- extern void __ptmf_scall(...);
- extern void *__ptmf_cast(long offset,const void *ptmfrom,void *ptmto);
- extern void *__register_global_object(void *object,void *destructor,void *regmem);
- extern void *__register_local_object(void *object,void *destructor,void *regmem);
- extern void *__preregister_local_object(void *object,void *regmem);
- extern void *__reregister_local_object(void *regmem,void *destructor);
- extern void __destroy_local_objects(void *regmem);
- extern void __destroy_local_objects_to(void *regmem);
- extern void __destroy_local_chain(void);
- extern void *__new_hdl(size_t size);
- extern void __del_hdl(void *hdl);
- extern void *__copy(void *to,void *from,size_t size);
- extern void *__init_arr(void *memptr,void *constructor,size_t object_size,size_t nobjects);
- extern void *__new_arr(void *constructor,size_t object_size,size_t objects);
- extern void __del_arr(void *memptr,void *destructor);
- extern void __dc_arr(void *mem,void *con_des,short object_size,short objects);
-
- #ifdef __cplusplus
- }
- #endif
-